﻿Public Class clsUzytkownik

#Region "Attributes"

    Private Shared FInstance As clsUzytkownik = Nothing 'New clsUzytkownik
    Public mvarUprawnienia As New DataTable()
    Private mvarId As Integer = -1
    Private mvarNumer As Integer
    Private mvarNazwisko As String
    Private mvarHaslo As String

#End Region

#Region "Properties"

    Public Shared ReadOnly Property Instance() As clsUzytkownik
        Get
            If (FInstance Is Nothing) Then
                FInstance = New clsUzytkownik()
            End If

            Return FInstance
        End Get
    End Property

    Public Property Id() As Integer
        Get
            Return mvarId
        End Get
        Set(ByVal value As Integer)
            mvarId = value
        End Set
    End Property

    Public Property Numer() As Integer
        Get
            Return mvarNumer
        End Get
        Set(ByVal value As Integer)
            mvarNumer = value
        End Set
    End Property

    Public Property Nazwisko() As String
        Get
            Return mvarNazwisko
        End Get
        Set(ByVal value As String)
            mvarNazwisko = value
        End Set
    End Property

    Public Property Haslo() As String
        Get
            Return mvarHaslo
        End Get
        Set(ByVal value As String)
            mvarHaslo = value
        End Set
    End Property

#End Region

#Region "Methods"

    Private Sub New()
        UtworzTabele()
        Sprawdz()
    End Sub

    Private Sub UtworzTabele()

        With mvarUprawnienia.Columns
            .Add("id_uprawnienia", GetType(Integer))
            .Add("funkcja", GetType(String))
            .Add("wyzn_modyfikacji", GetType(Integer))
            .Add("wyzn_odczytu", GetType(Integer))
        End With

    End Sub

    Private Sub Sprawdz()

        Dim lvarDbHolder As clsDataBase
        Dim lvarNewRow As DataRow

        Dim lvarReader As OdbcDataReader = Nothing
        lvarDbHolder = New clsDataBase(VAR_CONNECTION_PARAMETERS, VAR_ERROR_HANDLER)

        If lvarDbHolder.IsOpen Then

            Dim lvarSqlRunner As New clsSqlRunner(lvarDbHolder, "queries_application_oem", "cls_uprawnienia", 1, VAR_ERROR_HANDLER)
            With lvarSqlRunner
                .AddParameter("p_zapytanie", VAR_LOGIN)
                lvarReader = .ExecuteQuery
            End With

            If lvarReader.HasRows Then
                While lvarReader.Read
                    mvarId = CInt(IIf(IsDBNull(lvarReader.Item("id")), "", lvarReader.Item("id")))
                    mvarNumer = CInt(IIf(IsDBNull(lvarReader.Item("numer")), "", lvarReader.Item("numer")))
                    mvarNazwisko = CStr(IIf(IsDBNull(lvarReader.Item("nazwisko")), "", lvarReader.Item("nazwisko")))
                    mvarHaslo = CStr(IIf(IsDBNull(lvarReader.Item("haslo")), "", lvarReader.Item("haslo")))
                End While

                lvarSqlRunner = New clsSqlRunner(lvarDbHolder, "SELECT uprawnienia.id, uprawnienia.wyzn_modyfikacji, uprawnienia.wyzn_odczytu, funkcja.nazwa  FROM oem.uprawnienia, oem.funkcja WHERE funkcja.id = uprawnienia.funkcja_id AND pracownik_id =" & mvarId & ";", VAR_ERROR_HANDLER)
                With lvarSqlRunner
                    lvarReader = .ExecuteQuery
                End With
                If lvarReader.HasRows Then
                    While lvarReader.Read
                        lvarNewRow = mvarUprawnienia.NewRow()
                        With lvarNewRow
                            .Item("id_uprawnienia") = IIf(IsDBNull(lvarReader.Item("id")), -1, lvarReader.Item("id"))
                            .Item("funkcja") = IIf(IsDBNull(lvarReader.Item("nazwa")), String.Empty, lvarReader.Item("nazwa"))
                            .Item("wyzn_modyfikacji") = IIf(IsDBNull(lvarReader.Item("wyzn_modyfikacji")), -1, lvarReader.Item("wyzn_modyfikacji"))
                            .Item("wyzn_odczytu") = IIf(IsDBNull(lvarReader.Item("wyzn_odczytu")), -1, lvarReader.Item("wyzn_odczytu"))
                        End With
                        mvarUprawnienia.Rows.Add(lvarNewRow)
                    End While
                End If
            End If

        End If

        lvarDbHolder.Close()

    End Sub

    Public Function Uprawnienia(ByVal Nazwa As String) As Integer

        If mvarUprawnienia.Rows.Count > 0 Then
            For Each lvarRow As DataRow In mvarUprawnienia.Rows
                If lvarRow.Item("funkcja").ToString() = Nazwa Then
                    Dim lvart As String
                    lvart = lvarRow.Item("wyzn_modyfikacji").ToString() & lvarRow.Item("wyzn_odczytu").ToString()
                    Return CInt(lvarRow.Item("wyzn_modyfikacji").ToString() & lvarRow.Item("wyzn_odczytu").ToString())
                    Exit For
                End If
            Next
        End If

    End Function

#End Region

End Class
